// 导入标题自定义头部内容插槽组件
import PageTools from '../components/PageTools/index'
// 导入上传样式组件
import UploadExcel from '../components/UploadExcel/index'
// 导入moment时间格式化组件
import moment from 'moment'
// 导入上传头像的的插件
import imges from '../components/ImageUpload/index'
// ~ 导入用户是否拥有按钮权限
import store from '../store/index'
// ~ 导入Vuex的报错弹窗
import { Message } from 'element-ui'
// 导入全屏按钮
import ScreenFull from '../components/ScreenFull/index'
// 导入语言按钮
import LangChange from '../components/Lang/index'
// 定义一个Vue插件并导出
export default {
  // Vue.use(MyPlugins, 'defaultImg.png')
  // Vue.use的参数二传递给install方法的第二个参数options
  install (Vue, options) {
    // 扩展自定义指令
    Vue.directive('imgerror', {
      inserted (el, bindings) {
        // el表示指令绑定的元素
        // bindings表示指令相关的配置信息
        console.log(bindings)
        // 图片加载成功
        // el.onload = function () {}
        // 图片加载失败
        el.onerror = function () {
          // 把加载失败的图片路径修改为指定的默认路径
          // 如果bindings.value有值就用它，否则用后面的options
          el.src = bindings.value || options
        }
      }
    })
    //! 配置全局组件(头部内容插槽组件)
    // Vue.component()是声明Vue的全局方法
    Vue.component('PageTools', PageTools)
    //! 配置全局组件(上传样式组件)
    Vue.component('UploadExcel', UploadExcel)
    //! 配置上传头像的全局组件
    Vue.component('imges', imges)
    //! 配置全屏按钮
    Vue.component('ScreenFull', ScreenFull)
    //! 导入语言切换按钮
    Vue.component('LangChange', LangChange)
    //! 设置全局过滤器 格式化时间
    Vue.filter('formatTime', value => {
      // 通过第三方包 moment 设置格式化时间 调用时候 |formatTime
      return moment(value).format('yyyy-MM-DD')
    })
    // ~ 配置一个实例化方法 判断用户是否拥有按钮方法(是否拥有操作权限)
    Vue.prototype.$isOk = (authPoint) => { // authPoint参数判断用户是否有权限点(组件传来的参数)
      // ~ 获得用户所有的按钮权限点 (获取用户的权限点)
      const points = store.state.user.userInfo.roles.points
      // ~ 判断特点按钮是否存在权限点
      const flag = points.includes(authPoint)
      // ~ 设置饿了么ui提供的弹窗效果
      if (flag) {
        // 如果成功 返回true
        return true
      } else {
        // 如果失败 提示用户 返回false
        Message.error('没有该操作权限！')
        return false
      }
    }
  }
}
